package com.ryskoo.util;

import java.io.File;
import java.util.Date;
import java.util.Random;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import com.ryskoo.customer.vendor.domain.VendorPO;
import com.ryskoo.customer.vendor.service.IVendorService;
import com.ryskoo.framework.core.utils.DateFormatHelper;

/**
 * 图片上传到tomcat的工具类
 */
@Component(value = "LocalUploaderClient")
public class LocalUploaderClient {

    /** tomcat存放图片的路径 */
    @Value("${localPath}")
    public String localPath;

    @Value("${imageUrl}")
    public String imageUrl;
    
    @Autowired
    private IVendorService vendorService;

    /**
     * 上传压缩图片到tomcat
     * @param filePath
     * @return
     */
    public String uploadToLocal(String filePath) {
        try {
            File file = new File(filePath);
            File targetFile = null;
            //返回存储路径
            String msg = "";
            String fileName = file.getName();//获取文件名加后缀
            if (fileName != null && fileName != "") {
                //文件存储位置
                String path = localPath;
                //文件后缀
                String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
                //新的文件名
                fileName = new Date().getTime() + "_" + new Random().nextInt(1000) + fileF;
                //先判断文件是否存在
                String fileAdd = DateFormatHelper.getNowTimeStr(DateFormatHelper.FORMAT_DATE_STR2);
                File file1 = new File(path + "/" + fileAdd);
                //如果文件夹不存在则创建
                if (!file1.exists() && !file1.isDirectory()) {
                    file1.mkdir();
                }
                targetFile = new File(file1, fileName);
                try {
                    FileUtils.copyFile(file, targetFile);
                    // 删除压缩的原文件
                    if(file.exists()){
                        file.delete();
                    }
                    //本地地址换成外网路径访问（配置nginx之后，不需要这样设置，直接转发到指定的目录）
                    String url = path.substring(path.lastIndexOf("/"), path.length());
                    msg = imageUrl + url + "/" + fileAdd + "/" + fileName;
                    return msg;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    
    
    /**
     * 上传压缩图片到tomcat
     * @param filePath
     * @return
     */
    public String uploadToLocal(String filePath,String vendorUuid) {
        try {
            File file = new File(filePath);
            File targetFile = null;
            //返回存储路径
            String msg = "";
            String fileName = file.getName();//获取文件名加后缀
            if (!StringUtils.isEmpty(fileName)) {
                //文件存储位置
                String path = localPath;
                //文件后缀
                String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
                //新的文件名
                fileName = new Date().getTime() + "_" + new Random().nextInt(1000) + fileF;
                
                //根据商户登录名和日期生成新的文件夹
                String path2 = "";
                if (!StringUtils.isEmpty(vendorUuid)) {
                	VendorPO vendor = vendorService.getByUuid(vendorUuid);
                	path2 = "/" + vendor.getLoginName();
                }
                
                String fileAdd = DateFormatHelper.getNowTimeStr(DateFormatHelper.FORMAT_DATE_STR2);
                path2 = path2 + "/" + fileAdd;
                
                File file1 = new File(path + path2);
                
                //如果文件夹不存在则创建
                if (!file1.exists() && !file1.isDirectory()) {
                    file1.mkdirs();
                }
                targetFile = new File(file1, fileName);
                try {
                    FileUtils.copyFile(file, targetFile);
                    // 删除压缩的原文件
                    if(file.exists()){
                        file.delete();
                    }
                    //本地地址换成外网路径访问（配置nginx之后，不需要这样设置，直接转发到指定的目录）
                    String url = path.substring(path.lastIndexOf("/"), path.length());
                    msg = imageUrl + url + path2 + "/" + fileName;
                    return msg;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    
}
